package org.broncho.ccs.base;

/**
 * 定义系统的计算流程
 * @author ZhangXiao
 * @time 2013年9月1日
 */
public abstract class ComputeTemplate {

	/**
	 * 计算流程
	 * @param sid
	 */
	public void run(int sid) {
		this.start();
		this.init();
		this.initValue();
		this.initStrategy(sid);
		this.execute();
		this.outputMessage();
		this.end();
	}

	/**
	 * 流程开始
	 */
	public abstract void start();

	/**
	 * 创建记录状态的变量
	 */
	public abstract void init();

	/**
	 * 初始化记录状态的变量值
	 * 
	 */
	public abstract void initValue();

	/**
	 * 初始化策略
	 * 
	 * @param sid
	 *            策略标号
	 */
	public abstract void initStrategy(int sid);

	/**
	 * 执行计算
	 */
	public abstract void execute();

	/**
	 * 输出信息
	 */
	public abstract void outputMessage();

	/**
	 * 流程结束
	 */
	public abstract void end();

}
